package com.gewei.dao;

import com.gewei.dto.CheckItemTypeDTO;
import com.github.pagehelper.Page;
import com.gewei.pojo.CheckItem;

import java.util.List;
import java.util.Map;

/**
 * 预约管理-检查项管理持久层 Dao 接口
 *  本项目是基于 MyBatis 的 Mapper 动态代理技术实现持久层操作，
 *  故只需要提供接口和 Mapper 映射文件，无须提供实现类。
 *
 * @author gewei
 */
public interface CheckItemDao {

    /**
     * 新增检查项
     *
     * @param checkItem
     */
    void add(CheckItem checkItem);

    /**
     * 分页查询检查项（用了分页插件，所以用 Page 对象）
     *
     * @param queryString
     * @return
     */
    Page<CheckItem> selectByCondition(String queryString);

    /**
     * 删除检查项
     *
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 检查项关联到检查组的数量
     *
     * @param checkItemId
     * @return
     */
    long findCountByCheckItemId(Integer checkItemId);

    /**
     * 编辑检查项
     *
     * @param checkItem
     */
    void edit(CheckItem checkItem);

    /**
     * 编辑检查项类型
     *
     * @param checkItemTypeDTO
     */
    void editType(CheckItemTypeDTO checkItemTypeDTO);

    /**
     * 查询检查项
     *
     * @param id
     * @return
     */
    CheckItem findById(Integer id);

    /**
     * 查询所有检查项
     *
     * @return
     */
    List<CheckItem> findAll();

    /**
     * 根据检查组 id 查询关联的检查项
     *
     * @return
     */
    List<CheckItem> findCheckItemById();
}